using System;
using System.IO;
using System.Text;

namespace Caramel.IO
{
	public interface IFile
	{
		//void Encrypt(string path);

		bool Exists(string path);

		//FileSecurity GetAccessControl(string path);

		//FileSecurity GetAccessControl(string path, AccessControlSections includeSections);

		//FileAttributes GetAttributes(string path);

		//DateTime GetCreationTime(string path);

		//DateTime GetCreationTimeUtc(string path);

		//DateTime GetLastAccessTime(string path);

		//DateTime GetLastAccessTimeUtc(string path);

		//DateTime GetLastWriteTime(string path);

		//DateTime GetLastWriteTimeUtc(string path);

		void Move(string sourceFileName, string destFileName);

		Stream Open(string path, FileMode mode, FileAccess access, FileShare share);

		byte[] ReadAllBytes(string path);

		string[] ReadAllLines(string path, Encoding encoding);

		string ReadAllText(string path, Encoding encoding);

		void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);

		//void SetAccessControl(string path, FileSecurity fileSecurity);

		//void SetAttributes(string path, FileAttributes fileAttributes);

		//void SetCreationTime(string path, DateTime creationTime);

		//void SetCreationTimeUtc(string path, DateTime creationTimeUtc);

		//void SetLastAccessTime(string path, DateTime lastAccessTime);

		//void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);

		//void SetLastWriteTime(string path, DateTime lastWriteTime);

		//void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);

		void WriteAllBytes(string path, byte[] bytes);

		void WriteAllLines(string path, string[] contents, Encoding encoding);

		void WriteAllText(string path, string contents, Encoding encoding);
	}
}
